package com.czk.scala.chapter05

/**
 * @Author:ChenZhangKun
 * @Date: 2021/12/29 19:09
 */
object Test12_MyWhile {
  def main(args: Array[String]): Unit = {
    var n = 10
    // 常规的while循环
    while (n >= 1) {
      println(n)
      n -= 1
    }
    println("===========")

    // 用闭包实现一个函数，将代码快作为参数传入，递归调用
    def myWhile(condition: => Boolean): (=> Unit) => Unit = {
      // 内存函数需要递归调用
      // 参数是循环体
      def doLoop(op: => Unit): Unit = {
        if (condition) {
          op
          myWhile(condition)(op)
        }
      }
      // 返回函数
      doLoop
    }
    var m = 10
    myWhile(m >= 1) {
      println(m)
      m-=1
    }
  }
}
